package com.sophossystems.client.asmon.dao;

import com.sophossystems.client.asmon.dao.ClienteDao;
import com.sophossystems.client.asmon.dto.ClienteDTO;
import com.sophossystems.client.asmon.dto.ClientePkDTO;
import com.sophossystems.client.asmon.exceptions.DaoException;
import java.util.Date;
import java.util.List;

public interface ClienteDao
{
	/**
	 * Method 'insert'
	 * 
	 * @param dto
	 * @return ClientePk
	 */
	public ClientePkDTO insert(ClienteDTO dto);

	/** 
	 * Updates a single row in the CLIENTE table.
	 */
	public void update(final ClienteDTO dto) throws DaoException;

	/** 
	 * Deletes a single row in the CLIENTE table.
	 */
	public void delete(ClientePkDTO pk) throws DaoException;

	/** 
	 * Returns all rows from the CLIENTE table that match the criteria 'idCliente = :idCliente'.
	 */
	public ClienteDTO findByPrimaryKey(int idCliente) throws DaoException;

	/** 
	 * Returns all rows from the CLIENTE table that match the criteria ''.
	 */
	public List<ClienteDTO> findAll() throws DaoException;

	/** 
	 * Returns all rows from the CLIENTE table that match the criteria 'idCliente = :idCliente'.
	 */
	public List<ClienteDTO> findWhereIdClienteEquals(int idCliente) throws DaoException;

	/** 
	 * Returns all rows from the CLIENTE table that match the criteria 'idTipoCliente = :idTipoCliente'.
	 */
	public List<ClienteDTO> findWhereIdTipoClienteEquals(int idTipoCliente) throws DaoException;

	/** 
	 * Returns all rows from the CLIENTE table that match the criteria 'id_direccion = :idDireccion'.
	 */
	public List<ClienteDTO> findWhereIdDireccionEquals(int idDireccion) throws DaoException;

	/** 
	 * Returns all rows from the CLIENTE table that match the criteria 'idStatus = :idStatus'.
	 */
	public List<ClienteDTO> findWhereIdStatusEquals(int idStatus) throws DaoException;

	/** 
	 * Returns all rows from the CLIENTE table that match the criteria 'idRecolectaDoc = :idRecolectaDoc'.
	 */
	public List<ClienteDTO> findWhereIdRecolectaDocEquals(int idRecolectaDoc) throws DaoException;

	/** 
	 * Returns all rows from the CLIENTE table that match the criteria 'idContadorAsig = :idContadorAsig'.
	 */
	public List<ClienteDTO> findWhereIdContadorAsigEquals(int idContadorAsig) throws DaoException;

	/** 
	 * Returns all rows from the CLIENTE table that match the criteria 'idCoordinador = :idCoordinador'.
	 */
	public List<ClienteDTO> findWhereIdCoordinadorEquals(int idCoordinador) throws DaoException;

	/** 
	 * Returns all rows from the CLIENTE table that match the criteria 'idContactoVenta = :idContactoVenta'.
	 */
	public List<ClienteDTO> findWhereIdContactoVentaEquals(int idContactoVenta) throws DaoException;

	/** 
	 * Returns all rows from the CLIENTE table that match the criteria 'fechaCaptura = :fechaCaptura'.
	 */
	public List<ClienteDTO> findWhereFechaCapturaEquals(Date fechaCaptura) throws DaoException;

	/** 
	 * Returns the rows from the CLIENTE table that matches the specified primary-key value.
	 */
	public ClienteDTO findByPrimaryKey(ClientePkDTO pk) throws DaoException;

	public ClientePkDTO findLastInsert() throws DaoException;
	
	
	public ClienteDTO findByRfc(String rfc) throws DaoException;
}
